/*
 * @Author: hucc
 * @Date: 2021-09-27 11:04:25
 * @LastEditors: hucc
 * @LastEditTime: 2021-09-27 18:41:13
 * @Description: 
 */

//set集合不包含重复值的集合 可以用来实现数组去重
let arr = [1, 2, 3, 5, 1, 6, 3, 2, 7]
let set = new Set(arr);
console.log(set); //Set(6) { 1, 2, 3, 5, 6, 7 }
//转为数组类型
//console.log(Array.from(set)); //[ 1, 2, 3, 5, 6, 7 ]

//set api
//Set.prototype.size属性  Set实例对象的个数
console.log(set.size); //6

//Set.prototype.add(value)方法  添加某个值 返回Set实例本身
set.add(100);
console.log(set); //Set(7) { 1, 2, 3, 5, 6, 7, 100 }

//Set.prototype.delete(value)  删除某个值 返回一个布尔值 判断是否删除成功
set.delete(1);
console.log(set); //Set(6) { 2, 3, 5, 6, 7, 100 }

//Set.prototype.has(value)  判断某个值是否是Set实例的成员 返回布尔值
console.log(set.has(1)); //false

//Set.prototype.clear() 清除Set实例对象的所有成员  没有返回值
//set.clear(); 
//console.log(set)

//Set.prototype.keys()  返回所有的键名
//Set.prototype.values() 返回所有的键值
//Set.prototype.entries() 返回所有的键值对
//在Set实例对象中，key和value一样
let keys = set.keys();
let values = set.values();
let entries = set.entries();
console.log(keys); //[Set Iterator] { 2, 3, 5, 6, 7, 100 }
console.log(values); //[Set Iterator] { 2, 3, 5, 6, 7, 100 }
console.log(entries.next()); //{ value: [ 2, 2 ], done: false }

//Set.prototype.forEach()  遍历每个成员
set.forEach((value) => {
    console.log(value);
})